package commEntity

// BaseEntity 基础信息
type BaseEntity struct {
	Id         int64 // 对象id
	CreateTime int64 // 创建时间
	UpdateTime int64 // 更新时间
}

// IEntity 定义接口
type IEntity interface {
	Type() string                  // 类型名称
	GetBaseEntity() *BaseEntity    // 基础信息
	NewEntity() IEntity            // 实例化一个Entity，它的各成员部位nil
	NewPo() interface{}            // 实例化一个PO，它的各成员部位nil
	MakeServiceKey() string        // 生成string格式的key
	MakeServiceKeyList() []string  // 生成[]string格式的key
	TableName() string             // 数据库表名称，默认名称，在持久化的时候对应哪个数据库表
	BuildByJson(jsn *string) error // 构造实体
	BuildToJson() (string, error)  // 构造实体
	BuildByPo(interface{})         // 构造实体
	BuildToPo() interface{}        // 构造实体
}

// MakeServiceKey Java的编码格式范例："[mqtt-client, 范例：MQTT客户端]"，注意，它带""的字符串
func MakeServiceKey(slic []string) string {
	var str = "\"["
	for i := 0; i < len(slic); i++ {
		if i != 0 {
			str += ", "
		}

		str += slic[i]
	}
	str += "]\""

	return str
}
